Er zijn 5 soorten modellen getraind. De accuracy (aantal juist voorspelde uitkomsten in de test set) is het hoogst bij het gradient boosted model (gbm) en het random forest (rf). Wanneer we naar het verloop van de hitrates kijken dan blijft het gbm-model het langste op niveau, waardoor we van dit model een wat betere prestatie in de topgroep verwachten. Bij dit model zien we dat de leeftijd van de persoon (op het moment van onderzoek) de belangrijkste variabele is, daarna de indicator of kostendeler een actuele relatievorm is, en als derde het aantal contacten met onderwerp “No show”. We moeten dit wel met voorzichtigheid interpreteren; bijna alle modellen geven leeftijd als belangrijkste variabele, maar er zijn verschillen in de 2e en verdere importances. Opvallend is wel dat kostendeler en no show ook bij het xgbTree model in de top 10 staan.
Hieronder staan in meer detail de modelkarakteristieken waarop de conclusie gebaseerd is.
In onderstaande tabel zien we een cijfermatige vergelijking van de modellen. In de kolom methode staat het toegepaste machine learning algoritme. De metric is de meetwaarde waarop het algoritme geoptimaliseerd is. Dat houdt in dat we variëren in de hyperparameters die voor een algoritme beschikbaar zijn (‘tuning grid’) en in een cross-validatie binnen de trainingsset te kijken met welke instelling van de hyperparameter(s) de metric maximaal of minimaal is. Vervolgens wordt met deze optimale instelling een predictie op de testset gedaan. De uitkomst daarvan staat in de kolommen Accuracy, Kappa en de diverse hitrates. Voordat het algoritme getraind werd, is een featureselectie toegepast. De naam hiervan staat in de 4e kolom en bevat een korte aanduiding van de toegepaste selectietechnieken.
De hitrates plot toont het cumulatieve aandeel juiste voorspellingen (hits) over de aflopend gesorteerde risicoscores. Het geeft een indicatie van de ‘lift’ die te verwachten is indien we de top-X hoogste scores aan een fraude-onderzoek onderwerpen. De grafiek zal in het begin behoorlijk fluctueren, omdat de cumulatieve waarde bij kleine aantallen sterk kan variëren. Per definitie daalt de plot tot het aandeel hits in de gehele populatie (baseline); de ‘gehele populatie’ is hier de testset. De ‘lift’ is het verschil tussen de hitrate en de baseline. Is bijvoorbeeld in de eerste 500 van de totaal 2500 observaties de lift 0.2 op een baseline van 0.5, dan verwachten we op de uiteindelijke scoringspopulatie ook een lift van 0.2/0.5 ten opzichte van de baseline voor de eerste 500/2500 (=20%) personen.
De ROC curve laat zien hoe goed een model onderscheid kan maken tussen de klassen (fraude ‘Ja’ dan wel ‘Nee’). Hij ontstaat door te variëren in de drempelwaarde waarboven we aan een observatie met een bepaalde risicoscore de klasse ‘Ja’ toekennen: van 0 (altijd ‘Ja’) tot 1 (altijd ‘Nee’). Hoe meer de grafiek naar linksboven neigt (oftewel hoe groter het oppervlak onder de curve, de ‘AUC’), hoe beter het model kan onderscheiden. NB: de plot zegt niets over de ‘beste’ drempelwaarde, want dat is een businessafweging: wil je een hoge sensitivity of een hoge specifictity? Anders gezegd: wil je zo veel mogelijk true positives, met meer false positives als keerzijde, of zo veel mogelijk true negatives, met meer false negatives als keerzijde? Voor het risicomodel van uitkeringsfraude is de drempelwaarde niet echt van belang, omdat we alleen naar de scores kijken.
Hieronder staat een tabel met de relatieve belangrijkheid van features voor elk van de modellen. De relatieve belangrijkheid (variable importance) is een maat voor de rol die een feature speelt in het model. De maat is relatief: de hoogst scorende feature heeft altijd een waarde van 100, features die geen rol spelen de waarde 0. De wijze waarop het getal voor de belangrijkheid bepaald wordt, hangt af van de toegepaste modelleertechniek. Klik op de kolomkop om op belangrijkheid te sorteren voor het desbetreffende model.
De calibratieplot toont hoe evenwichtig een model over alle kansklassen presteert. Heeft bijvoorbeeld de groep van 10% laagst scorende observaties ook ongeveer 10% als targetwaarde ‘Ja’? De groepen worden bepaald op basis van kwantielen, zodat in elke groep evenveel observaties zitten. Voor elke groep wordt vervolgens gekeken welk percentage target ‘Ja’ heeft. Een perfect gekalibreerd model laat een diagonale lijn onder een hoek van 45 graden zien. Een golvende lijn betekent dat een model in sommige kansklassen overschat en in andere onderschat.
Bij Stabiliteit kijken we naar de spreiding van de performance metric waarden. Daarmee is te zien hoe stabiel het model presteert over alle iteraties heen.
## [1] "Permormance metric (objective) = Accuracy"
##
## Call:
## summary.resamples(object = caret::resamples(model_selectie
## %>% pull(model), modelNames = model_selectie$naam))
##
## Models: glmnet-Accuracy, gbm-Accuracy, xgbTree-Accuracy, rf-Accuracy, rpart-Accuracy
## Number of resamples: 27
##
## Accuracy
## Min. 1st Qu. Median Mean 3rd Qu.
## glmnet-Accuracy 0.6213768 0.6311735 0.6407240 0.6430798 0.6503623
## gbm-Accuracy 0.6050725 0.6483914 0.6548913 0.6508625 0.6572983
## xgbTree-Accuracy 0.6132246 0.6381341 0.6461538 0.6447219 0.6502042
## rf-Accuracy 0.6273799 0.6403999 0.6476449 0.6475399 0.6551894
## rpart-Accuracy 0.5621034 0.5964674 0.6005435 0.6028100 0.6109601
## Max. NA's
## glmnet-Accuracy 0.6693841 0
## gbm-Accuracy 0.6666667 0
## xgbTree-Accuracy 0.6690843 0
## rf-Accuracy 0.6754306 0
## rpart-Accuracy 0.6349638 0
##
## Kappa
## Min. 1st Qu. Median Mean 3rd Qu.
## glmnet-Accuracy 0.2421940 0.2616631 0.2807676 0.2855505 0.3002010
## gbm-Accuracy 0.2100801 0.2964566 0.3095333 0.3014200 0.3143175
## xgbTree-Accuracy 0.2258395 0.2759770 0.2916121 0.2889067 0.2997544
## rf-Accuracy 0.2550763 0.2809363 0.2954286 0.2951583 0.3103660
## rpart-Accuracy 0.1240087 0.1927358 0.2010083 0.2053802 0.2213351
## Max. NA's
## glmnet-Accuracy 0.3382469 0
## gbm-Accuracy 0.3328604 0
## xgbTree-Accuracy 0.3375397 0
## rf-Accuracy 0.3509141 0
## rpart-Accuracy 0.2697358 0